package com.ymatou.iapi.optrade.parameter.vo;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.ymatou.iapi.optrade.parameter.enums.LogisticsTypeEnum;

public class OrderVo {

	// 留言
	private String leaveWord;

	// 自动取消小时数(说明：下单后在规定时间未付款，订单自动取消)	
	private BigDecimal autoCancelOrderHours;

	// 订单里的商品项	
	private List<OrderItemVo> orderItems;

	/**
	 * 电商件 false:个人件, true:电商件
	 */
	private boolean ecommerceFlag;

	/**
	 * 物流类型
	 */
	private LogisticsTypeEnum logisticsType;
	
	/**
	 * 客户端无需传入，预售订单二次确认时，交易自动填充
	 */
	private long orderId;
	
	/**
	 * 预售订单全款支付开始时间
	 */
	private Date paymentStartTime;
	
	/**
	 * 预售订单全款支付截止时间
	 */
	private Date paymentEndTime;
	
	/**
	 * 预售订单预付卡金额（只在验证时用，前端不传）
	 */
	private BigDecimal earnestCardAmount;
	
	/**
	 * 货主（渠道商/直销商）
	 */
	private Long goodsOwnerId;
	
	/**
	 * 神器订单的物流类型
	 */
	private int shenqiLogisticsType;
	
	/**
	 * 神器订单的身份证要求。0:不需要；1：号码；2：图片
	 */
	private int shenqiIdCardRequirement;
	
	/**
	 *  拼邮发货类型 (空老订单，兼容)
     * 1.国际
     * 2.国内
	 */
	private Integer packageDeliveryType;
	
	private String deviceId;
	
	private String equipmentId;
	
	private String sourceIp;
	
	/**
	 *
	 * 0：普通，1：体验会员，2：安利会员，3：海淘达人
	 */
	private Integer orderType;
	
	/**
	 *
	 * 链接购买大礼包订单的原始订单号
	 */
	private Long linkPayAnliOrderId;
	
	/**
	 * 订单别名
	 */
	private String orderAlias;
	
	/**
	 * 订购人身份证信息id
	 */
	private Long purchaserIdcardId;
	
	private Integer warehouseId;
	
	/**
	 * 鉴别物流费
	 */
	private BigDecimal authenticateFreight;

	/**
	 * 鉴别物流费类型承担方（1、买手 2、买家）
	 */
	private Integer authenticateFreightType;
	
	/**
	 * 物流时效
	 */
	private Integer logisticsAging;
	
	/**
	 * 订单是否使用官方物流发货
	 */
	private Boolean officialLogistics;

	public String getLeaveWord() {
		return leaveWord;
	}

	public void setLeaveWord(String leaveWord) {
		this.leaveWord = leaveWord;
	}

	public BigDecimal getAutoCancelOrderHours() {
		return autoCancelOrderHours;
	}

	public void setAutoCancelOrderHours(BigDecimal autoCancelOrderHours) {
		this.autoCancelOrderHours = autoCancelOrderHours;
	}

	public List<OrderItemVo> getOrderItems() {
		return orderItems;
	}

	public void setOrderItems(List<OrderItemVo> orderItems) {
		this.orderItems = orderItems;
	}

	public boolean isEcommerceFlag() {
		return ecommerceFlag;
	}

	public void setEcommerceFlag(boolean ecommerceFlag) {
		this.ecommerceFlag = ecommerceFlag;
	}

	public LogisticsTypeEnum getLogisticsType() {
		return logisticsType;
	}

	public void setLogisticsType(LogisticsTypeEnum logisticsType) {
		this.logisticsType = logisticsType;
	}

	public long getOrderId() {
		return orderId;
	}

	public void setOrderId(long orderId) {
		this.orderId = orderId;
	}

	public Date getPaymentStartTime() {
		return paymentStartTime;
	}

	public void setPaymentStartTime(Date paymentStartTime) {
		this.paymentStartTime = paymentStartTime;
	}

	public Date getPaymentEndTime() {
		return paymentEndTime;
	}

	public void setPaymentEndTime(Date paymentEndTime) {
		this.paymentEndTime = paymentEndTime;
	}

	public BigDecimal getEarnestCardAmount() {
		return earnestCardAmount;
	}

	public void setEarnestCardAmount(BigDecimal earnestCardAmount) {
		this.earnestCardAmount = earnestCardAmount;
	}

	public Long getGoodsOwnerId() {
		return goodsOwnerId;
	}

	public void setGoodsOwnerId(Long goodsOwnerId) {
		this.goodsOwnerId = goodsOwnerId;
	}

	public int getShenqiLogisticsType() {
		return shenqiLogisticsType;
	}

	public void setShenqiLogisticsType(int shenqiLogisticsType) {
		this.shenqiLogisticsType = shenqiLogisticsType;
	}

	public int getShenqiIdCardRequirement() {
		return shenqiIdCardRequirement;
	}

	public String getDeviceId() {
		return deviceId;
	}

	public void setDeviceId(String deviceId) {
		this.deviceId = deviceId;
	}

	public String getEquipmentId() {
		return equipmentId;
	}

	public void setEquipmentId(String equipmentId) {
		this.equipmentId = equipmentId;
	}

	public String getSourceIp() {
		return sourceIp;
	}

	public void setSourceIp(String sourceIp) {
		this.sourceIp = sourceIp;
	}

	public void setShenqiIdCardRequirement(int shenqiIdCardRequirement) {
		this.shenqiIdCardRequirement = shenqiIdCardRequirement;
	}

	public Integer getPackageDeliveryType() {
		return packageDeliveryType;
	}

	public void setPackageDeliveryType(Integer packageDeliveryType) {
		this.packageDeliveryType = packageDeliveryType;
	}

	public Integer getOrderType() {
		return orderType;
	}

	public void setOrderType(Integer orderType) {
		this.orderType = orderType;
	}

	public Long getLinkPayAnliOrderId() {
		return linkPayAnliOrderId;
	}

	public void setLinkPayAnliOrderId(Long linkPayAnliOrderId) {
		this.linkPayAnliOrderId = linkPayAnliOrderId;
	}

	public String getOrderAlias() {
		return orderAlias;
	}

	public void setOrderAlias(String orderAlias) {
		this.orderAlias = orderAlias;
	}

	public Long getPurchaserIdcardId() {
		return purchaserIdcardId;
	}

	public void setPurchaserIdcardId(Long purchaserIdcardId) {
		this.purchaserIdcardId = purchaserIdcardId;
	}

	public Integer getWarehouseId() {
		return warehouseId;
	}

	public void setWarehouseId(Integer warehouseId) {
		this.warehouseId = warehouseId;
	}

	public BigDecimal getAuthenticateFreight() {
		return authenticateFreight;
	}

	public void setAuthenticateFreight(BigDecimal authenticateFreight) {
		this.authenticateFreight = authenticateFreight;
	}

	public Integer getAuthenticateFreightType() {
		return authenticateFreightType;
	}

	public void setAuthenticateFreightType(Integer authenticateFreightType) {
		this.authenticateFreightType = authenticateFreightType;
	}

	public Integer getLogisticsAging() {
		return logisticsAging;
	}

	public void setLogisticsAging(Integer logisticsAging) {
		this.logisticsAging = logisticsAging;
	}

	public Boolean getOfficialLogistics() {
		return officialLogistics;
	}

	public void setOfficialLogistics(Boolean officialLogistics) {
		this.officialLogistics = officialLogistics;
	}
	
	public OrderVo withLogisticsType(LogisticsTypeEnum logisticsType) {
		
		this.setLogisticsType(logisticsType);
		
		return this;
	}
	
	public OrderVo withAutoCancelOrderHours(BigDecimal autoCancelOrderHours) {
		
		this.setAutoCancelOrderHours(autoCancelOrderHours);
		
		return this;
	}
	
	public OrderVo withLeaveWord(String leaveWord) {
		
		this.setLeaveWord(leaveWord);
		
		return this;
	}
	
	public OrderVo withOrderType(int orderType) {
		
		this.setOrderType(orderType);
		
		return this;
	}
	
	public OrderVo withLogisticsAging(Integer logisticsAging) {
		
		this.setLogisticsAging(logisticsAging);
		
		return this;
	}
	
	public OrderVo withPackageDeliveryType(Integer packageDeliveryType) {
		
		this.setPackageDeliveryType(packageDeliveryType);
		
		return this;
	}
	
	public OrderVo withOfficialLogistics(Boolean officialLogistics) {
		
		this.setOfficialLogistics(officialLogistics);
		
		return this;
	}
	
	public OrderVo withAuthenticateFreight(BigDecimal authenticateFreight) {
		
		this.setAuthenticateFreight(authenticateFreight);
		
		return this;
	}
	
	public OrderVo withAuthenticateFreightType(Integer authenticateFreightType) {
		
		this.setAuthenticateFreightType(authenticateFreightType);
		
		return this;
	}
}
